#pragma once
#include"pch.h"

using namespace std;
//char*תtchar
extern TCHAR* CharToTchar(const char* _char);
//tcharתchar*
extern char* TcharToChar(const TCHAR* tchar);

//stringתtchar
extern TCHAR* StringToTchar(string _oldString);
//tcharתstring
extern string TcharToString(TCHAR* _oldTchar);
//输出字符串到调试控制台
extern void ODS(const char* strOutputString, ...);

class TString
{
public:
	TString();
	~TString();
public:
	//追加字符串
	void Append(const char* TXT);
	void Append(string& TXT);
	void Append(LPCTSTR TXT);

	//获取char*字符串
	char* GetChar();
	//获取LPCTSTR字符串
	TCHAR* GetLPCTSTR();
	//获取string字符串
	string GetString();
	//格式化字符
	void Format(const char* mat, ...);

	//获取字符串占用的字节数不包含\0
	int GetRawLength();
	//设置字符缓存池大小
	void SetNewSize(int num);
	//重新计算字符缓存池大小(字符实际长度+m_bufferStep)
	void ReSize();
	//现有字符缓存池是否够容纳新的字符串
	//够返回0,不够返回需要的新长度
	int SizeOfNew(const char* TXT);
	//清除字符串信息并初始化为 ""
	void Clear();

	//运算符重载
	TString operator=(const char* TXT);
	TString operator=(LPCTSTR TXT);
	TString operator=(string TXT);
public:
	char* m_str;
	//字符缓存池长度
	int m_bufferLength;
	//字符缓存池预留长度
	int m_bufferStep;
};


